Attaching package: ‘dplyr’
The following objects are masked from ‘package:stats’:
filter, lag
The following objects are masked from ‘package:base’:
intersect, setdiff, setequal, union
Attaching package: ‘plotly’
The following object is masked from ‘package:ggplot2’:
last_plot
The following object is masked from ‘package:stats’:
filter
The following object is masked from ‘package:graphics’:
layout
En esta gráfica de accidentes entre el 2016-2022 de caras de Chernoff
podemos observar en un inicio que hay 12 caras, una por cada mes del
año. Segundo hay variedad de colores, los cuales representan el día con
más accidentes de ese mes. Y por último todas las caras tiene el mismo
tamaño, ya que el tamaño lo determina la ruta con más accidentes.
Teniendo esto en cuenta, porque tiene el mismo tamaño todas las caras?
Pues los datos de análisis indican que a través del intervalo de años
entre el 2016-2022 las rutas con más accidentes han sido las cantonales.
Es muy interesante que en ese intervalo de años el día que suele tener
más accidentes es el viernes, además el Lunes y Sábado sueles tener la
misma cantidad de accidentes.
En este gráfico de pastel se muestra el porcentaje de los accidentes
entre el 2016-2022 por tipo de ruta. Se puede apreciar que el mayor
porcentaje de accidentes en el intervalo de años se ha dado en rutas
urbana, eso quizá tenga que ver en parte porque hay menos tránsito en
rutas rurales. Con lo anterior en cuenta, también puede ser que porque
hay menos cantidad de tránsito hayan menos factores psicoemocionales que
afecten al momento de conducir.
Entre 2016-2022, la gráfica apilada de barras muestra que las barras
están agrupadas por región y apiladas por cantones con mayor número de
accidentes. El color indica cuántos accidentes hubieron en cada cantón.
En la zona de Costa Rica, donde más accidentes ocurrieron, la región
central y el cantón de San José tienen el mayor número de accidentes.
Además, los cantones que comparten más accidentes son los más
desarrollados urbanamente, mientras que los cantones con menos
accidentes son los más pobres o menos desarrollados. Esto se podría
deber a que hay menos vehículos en carretera, por la falta de poder
adquisitivo.
Esta gráfica muestra el mínimo de accidentes por año, tipo de
circulación, estado del clima y son agrupados por la gravedad del
accidente. La mayoría de los accidentes curiosamente se dan con buen
tiempo, contrariamente a lo que se esperaría que sea más bien en un mal
clima como la lluvia. Esto quiere decir que si hay un buen clima los
conductores se relajan y no andan lo suficientemente atentos al
ambiente. Esto tiene un efecto inmediato con el tipo de circulación, ya
que al no tomar la suficiente precaución se terminan accidentando, y
estos en su mayoría son de extrema gravedad.
Esta matriz de disperción multivariada evalúa las condiciones
climáticas, el tipo de vía, el tiempo registrado, el tipo de tránsito y
el día con más accidentes en Costa Rica del 2016 al 2022. Como muestra
la matriz, el número de accidentes no solo en un año, sino en varios
años. Depende del lugar por donde conduzcas, si hay prohibiciones de
circulación, del tipo de tráfico o de la naturaleza de la carretera.
Esto significa que estos tres factores, que varían de un año a otro, no
cambian. Además, el día, las condiciones de la carretera y el clima
muestran un patrón de accidentes debido a los días ocupados, lo que
puede hacer que la conducción en ciertos tipos de vías sea más difícil y
peor debido a las condiciones climáticas. Por último, el patrón entre
día, carretera y hora puede ser muy similar al anterior, pero puede
variar en función de si es hora punta o un indicio de que el conductor
no se encuentra en óptimas condiciones de conducción. . Curiosamente, el
tráfico, las condiciones meteorológicas y las carreteras son claramente
inestables, como se esperaba.
LS0tDQp0aXRsZTogIkFjY2lkZW50ZXMgZGUgdHJhbnNpdG8gZW4gQ1IgZW50cmUgMjAxNi0yMDIyIg0Kb3V0cHV0OiBodG1sX25vdGVib29rDQotLS0NCg0KYGBge3IsIGVjaG8gPSBGQUxTRX0NCmRhdGEgPC0gcmVhZC5jc3YoImFjY2lkZW50ZXNfdHJhbnNpdG9fY29uX3ZpY3RpbWFzXzIwMTZfMjAyMi5jc3YiLCBzZXAgPSAiOyIpDQpgYGANCg0KYGBge3IsIGVjaG8gPSBGQUxTRSwgd2FybmluZyA9IEZBTFNFLCBtZXNzYWdlID0gRkFMU0V9DQpsaWJyYXJ5KGRwbHlyKQ0KbGlicmFyeShnZ3Bsb3QyKQ0KbGlicmFyeShwbG90bHkpDQpsaWJyYXJ5KGNvbG9yc3BhY2UpDQpsaWJyYXJ5KHRyZWVtYXBpZnkpDQpgYGANCg0KYGBge3IsIGVjaG89RkFMU0UsIG1lc3NhZ2UgPSBGQUxTRX0NCiNvYnRlbmVtb3MgbG9zIG1lc2VzLCBkaWFzIHkgbGEgcnV0YSBkb25kZQ0KI21hcyBhY2NpZGVudGVzIGhheQ0KbWVzZXNfZGlhc19SVV9tYXNfYWNjaWRlbnRlcyA8LSBkYXRhICU+JQ0KICBmaWx0ZXIoZ3JlcGwoIl5bQS1MXVxcLi4qXFxzKEVuZXJvfEZlYnJlcm98TWFyem98QWJyaWx8TWF5b3xKdW5pb3xKdWxpb3xBZ29zdG98U2V0aWVtYnJlfE9jdHVicmV8Tm92aWVtYnJlfERpY2llbWJyZSkkIiwgTWVzKSkgJT4lDQogIGZpbHRlcihncmVwbCgiXlsxLTddXFwuKERvbWluZ298THVuZXN8TWFydGVzfE1pw6lyY29sZXN8SnVldmVzfFZpZXJuZXN8U8OhYmFkbykkIiwgRMOtYSkpICU+JQ0KICBncm91cF9ieShNZXMsRMOtYSxSdXRhKSAlPiUNCiAgc3VtbWFyaXNlKE1EdG90YWxfYWNjaWRlbnRlcyA9IG4oKSkgJT4lDQogIGFycmFuZ2UoZGVzYyhNRHRvdGFsX2FjY2lkZW50ZXMpKQ0KDQpyZWdpc3Ryb3NfbWFzX2ZyZWN1ZW50ZXMgPC0gbWVzZXNfZGlhc19SVV9tYXNfYWNjaWRlbnRlcyAlPiUNCiAgZ3JvdXBfYnkoTWVzKSAlPiUNCiAgc2xpY2UoMSkNCiAgDQpudW1lcm9fbWVzIDwtIHNlcSgxLCAxMiwgbGVuZ3RoLm91dCA9IG5yb3cocmVnaXN0cm9zX21hc19mcmVjdWVudGVzKSkNCm51bWVyb19tZXMgPC0gYXMuaW50ZWdlcihudW1lcm9fbWVzKQ0KcmVnaXN0cm9zX21hc19mcmVjdWVudGVzIDwtIGNiaW5kKHJlZ2lzdHJvc19tYXNfZnJlY3VlbnRlcywgTnVtZXJvTWVzID0gbnVtZXJvX21lcykNCg0KIyBDcmVhciB1bmEgY29sdW1uYSBwYXJhIGVsIG7Dum1lcm8gZGUgZMOtYSBzZWfDum4gZWwgZMOtYSBkZSBsYSBzZW1hbmEgZW4gcmVnaXN0cm9zX21hc19mcmVjdWVudGVzDQpyZWdpc3Ryb3NfbWFzX2ZyZWN1ZW50ZXMkQ29sb3JEaWEgPC1pZmVsc2UocmVnaXN0cm9zX21hc19mcmVjdWVudGVzJETDrWEgPT0gIjEuRG9taW5nbyIsICJibHVlIiwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWZlbHNlKHJlZ2lzdHJvc19tYXNfZnJlY3VlbnRlcyREw61hID09ICIyLkx1bmVzIiwgInJlZCIsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmZWxzZShyZWdpc3Ryb3NfbWFzX2ZyZWN1ZW50ZXMkRMOtYSA9PSAiMy5NYXJ0ZXMiLCAieWVsbG93IiwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWZlbHNlKHJlZ2lzdHJvc19tYXNfZnJlY3VlbnRlcyREw61hID09ICI0Lk1pw6lyY29sZXMiLCAiY3lhbiIsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmZWxzZShyZWdpc3Ryb3NfbWFzX2ZyZWN1ZW50ZXMkRMOtYSA9PSAiNS5KdWV2ZXMiLCAiZGFya2dyZWVuIiwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWZlbHNlKHJlZ2lzdHJvc19tYXNfZnJlY3VlbnRlcyREw61hID09ICI2LlZpZXJuZXMiLCAiYnJvd24iLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZmVsc2UocmVnaXN0cm9zX21hc19mcmVjdWVudGVzJETDrWEgPT0gIjcuU8OhYmFkbyIsICJibGFjayIsIE5BKSkpKSkpKQ0KDQpyZWdpc3Ryb3NfbWFzX2ZyZWN1ZW50ZXMkaWRSdXRhIDwtaWZlbHNlKHJlZ2lzdHJvc19tYXNfZnJlY3VlbnRlcyRSdXRhID09ICJDYW50b25hbCIsIDEpDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICANCnJlZ2lzdHJvc19tYXNfZnJlY3VlbnRlcyRNZXMgPC0gZ3N1YigiW0EtTF1cXC4iLCAiIiwgcmVnaXN0cm9zX21hc19mcmVjdWVudGVzJE1lcykNCg0KcmVnaXN0cm9zX21hc19mcmVjdWVudGVzJETDrWEgPC0gZ3N1YigiWzEtN11cXC4iLCAiIiwgcmVnaXN0cm9zX21hc19mcmVjdWVudGVzJETDrWEpDQoNCmBgYA0KDQpgYGB7ciwgZWNobyA9IEZBTFNFfQ0KZ3JhZmljb19jaGVybm9mZiA8LSBnZ3Bsb3QocmVnaXN0cm9zX21hc19mcmVjdWVudGVzLCBhZXMoeCA9IE51bWVyb01lcywgeSA9IGlkUnV0YSxsYWJlbDEgPSBNZXMsbGFiZWwyID0gUnV0YSxsYWJlbDMgPSBEw61hKSkgKw0KICBnZW9tX3BvaW50KHNpemUgPSA5LGNvbG91ciA9IHJlZ2lzdHJvc19tYXNfZnJlY3VlbnRlcyRDb2xvckRpYSkgKw0KICBsYWJzKHggPSAiTWVzIix5ID0gIlJ1dGEiKSArDQogIGdlb21fdGV4dChhZXMobGFiZWwgPSAi8J+Rge+4jyDwn5GB77iPIiksdmp1c3QgPSAtNSwgc2l6ZSA9IDMpKyAgDQogIGdlb21fdGV4dChhZXMobGFiZWwgPSAi8J+RhCIpLCB2anVzdCA9IDUsIHNpemUgPSAyKSArDQogIHRoZW1lX2J3KCkNCg0KIyBDb252ZXJ0aW1vcyBlbCBncsOhZmljbyBnZ3Bsb3QyIGVuIHVubyBpbnRlcmFjdGl2byBjb24gcGxvdGx5DQpncmFmaWNvX2ludGVyYWN0aXZvIDwtIGdncGxvdGx5KGdyYWZpY29fY2hlcm5vZmYsdG9vbHRpcCA9IGMoImxhYmVsMSIsICJsYWJlbDIiLCAibGFiZWwzIikpDQoNCiMgTW9zdHJhbW9zIGVsIGdyw6FmaWNvIGludGVyYWN0aXZvDQpncmFmaWNvX2ludGVyYWN0aXZvDQoNCiMgMTIgY2FyYXMgcG9yIGxvcyBtZXNlcywgY29sb3IgY2FyYSBkaWFzIC4uLiB5IHRhbWFuaG8gY2FyYSBydXRhDQpgYGANCg0KRW4gZXN0YSBncsOhZmljYSBkZSBhY2NpZGVudGVzIGVudHJlIGVsIDIwMTYtMjAyMiBkZSBjYXJhcyBkZSBDaGVybm9mZiBwb2RlbW9zIG9ic2VydmFyIGVuIHVuIGluaWNpbyBxdWUgaGF5IDEyIGNhcmFzLCB1bmEgcG9yIGNhZGEgbWVzIGRlbCBhw7FvLiBTZWd1bmRvIGhheSB2YXJpZWRhZCBkZSBjb2xvcmVzLCBsb3MgY3VhbGVzIHJlcHJlc2VudGFuIGVsIGTDrWEgY29uIG3DoXMgYWNjaWRlbnRlcyBkZSBlc2UgbWVzLiBZIHBvciDDumx0aW1vIHRvZGFzIGxhcyBjYXJhcyB0aWVuZSBlbCBtaXNtbyB0YW1hw7FvLCB5YSBxdWUgZWwgdGFtYcOxbyBsbyBkZXRlcm1pbmEgbGEgcnV0YSBjb24gbcOhcyBhY2NpZGVudGVzLiBUZW5pZW5kbyBlc3RvIGVuIGN1ZW50YSwgcG9ycXVlIHRpZW5lIGVsIG1pc21vIHRhbWHDsW8gdG9kYXMgbGFzIGNhcmFzPyBQdWVzIGxvcyBkYXRvcyBkZSBhbsOhbGlzaXMgaW5kaWNhbiBxdWUgYSB0cmF2w6lzIGRlbCBpbnRlcnZhbG8gZGUgYcOxb3MgZW50cmUgZWwgMjAxNi0yMDIyIGxhcyBydXRhcyBjb24gbcOhcyBhY2NpZGVudGVzIGhhbiBzaWRvIGxhcyBjYW50b25hbGVzLiBFcyBtdXkgaW50ZXJlc2FudGUgcXVlIGVuIGVzZSBpbnRlcnZhbG8gZGUgYcOxb3MgZWwgZMOtYSBxdWUgc3VlbGUgdGVuZXIgbcOhcyBhY2NpZGVudGVzIGVzIGVsIHZpZXJuZXMsIGFkZW3DoXMgZWwgTHVuZXMgeSBTw6FiYWRvIHN1ZWxlcyB0ZW5lciBsYSBtaXNtYSBjYW50aWRhZCBkZSBhY2NpZGVudGVzLg0KDQpgYGB7cixlY2hvPUZBTFNFfQ0KcnVyYWxVcmJhbm9fbWFzX2FjY2lkZW50ZXM8LWRhdGEgJT4lDQogIGdyb3VwX2J5KFJ1cmFsLm8udXJiYW5vKSU+JQ0KICBzdW1tYXJpc2UoUlV0b3RhbF9hY2NpZGVudGVzID0gbigpKSAlPiUNCiAgYXJyYW5nZShkZXNjKFJVdG90YWxfYWNjaWRlbnRlcykpDQojIGRlc2RlIDIwMTYgaGFzdGFzIDIwMjINCmBgYA0KDQpgYGB7cixlY2hvPUZBTFNFfQ0KbGFiZWxzID0gcnVyYWxVcmJhbm9fbWFzX2FjY2lkZW50ZXMkUnVyYWwuby51cmJhbm8NCnZhbHVlcyA9IHJ1cmFsVXJiYW5vX21hc19hY2NpZGVudGVzJFJVdG90YWxfYWNjaWRlbnRlcw0KDQpmaWcxIDwtIHBsb3RfbHkodHlwZT0ncGllJywgbGFiZWxzPWxhYmVscywgdmFsdWVzPXZhbHVlcywgDQogICAgICAgICAgICAgICB0ZXh0aW5mbz0nbGFiZWwrcGVyY2VudCcsDQogICAgICAgICAgICAgICBpbnNpZGV0ZXh0b3JpZW50YXRpb249J3JhZGlhbCcpDQpmaWcxIDwtIGZpZzEgJT4lIGxheW91dCh0aXRsZSA9ICdBY2NpZGVudGVzIHBvciBydXRhIGVudHJlIDIwMTYtMjAyMicpDQpmaWcxDQpgYGANCg0KRW4gZXN0ZSBncsOhZmljbyBkZSBwYXN0ZWwgc2UgbXVlc3RyYSBlbCBwb3JjZW50YWplIGRlIGxvcyBhY2NpZGVudGVzIGVudHJlIGVsIDIwMTYtMjAyMiBwb3IgdGlwbyBkZSBydXRhLiBTZSBwdWVkZSBhcHJlY2lhciBxdWUgZWwgbWF5b3IgcG9yY2VudGFqZSBkZSBhY2NpZGVudGVzIGVuIGVsIGludGVydmFsbyBkZSBhw7FvcyBzZSBoYSBkYWRvIGVuIHJ1dGFzIHVyYmFuYSwgZXNvIHF1aXrDoSB0ZW5nYSBxdWUgdmVyIGVuIHBhcnRlIHBvcnF1ZSBoYXkgbWVub3MgdHLDoW5zaXRvIGVuIHJ1dGFzIHJ1cmFsZXMuIENvbiBsbyBhbnRlcmlvciBlbiBjdWVudGEsIHRhbWJpw6luIHB1ZWRlIHNlciBxdWUgcG9ycXVlIGhheSBtZW5vcyBjYW50aWRhZCBkZSB0csOhbnNpdG8gaGF5YW4gbWVub3MgZmFjdG9yZXMgcHNpY29lbW9jaW9uYWxlcyBxdWUgYWZlY3RlbiBhbCBtb21lbnRvIGRlIGNvbmR1Y2lyLg0KDQpgYGB7cixlY2hvPUZBTFNFfQ0KI3kgPW1pZGVwbGFuIHg9IGNhbnRvbg0KI3RlbmVyIGNhbnRvbiBjb24gbWFzIHkgbWVub3MgYWNjaWRlbnRlcw0KcmVnaW9uX2NhbnRvbl9tYXNfYWNjaWRlbnRlczwtZGF0YSU+JQ0KICBncm91cF9ieShSZWdpw7NuLk1pZGVwbGFuLCBDYW50w7NuKSU+JQ0KICBzdW1tYXJpc2UoUkN0b3RhbF9hY2NpZGVudGVzID0gbigpLC5ncm91cHMgPSAiZHJvcCIpDQoNCnJlZ2lvbl9jYW50b25fbWFzX2FjY2lkZW50ZXM8LXJlZ2lvbl9jYW50b25fbWFzX2FjY2lkZW50ZXMlPiUNCiAgZ3JvdXBfYnkoUmVnacOzbi5NaWRlcGxhbiwgQ2FudMOzbiklPiUNCiAgc3VtbWFyaXNlKG1heF92YWxvciA9IG1heChSQ3RvdGFsX2FjY2lkZW50ZXMpLC5ncm91cHMgPSAiZHJvcCIpJT4lDQogIGFycmFuZ2UobWF4X3ZhbG9yKQ0KDQojIE7Dum1lcm8gZGUgY29sb3JlcyBkZXNlYWRvDQpuX2NvbG9yZXMgPC0gMTc2DQoNCiMgR2VuZXJhciBsYSBwYWxldGEgZGUgY29sb3Jlcw0KDQpwYWxldGFfY29sb3JlcyA8LXJhaW5ib3dfaGNsKG5fY29sb3JlcykgIyBFamVtcGxvIGRlIGNvbG9yZXMgYmFzZQ0KYGBgDQoNCmBgYHtyLGVjaG89RkFMU0V9DQoNCmZpZyA8LSBwbG90X2x5KHJlZ2lvbl9jYW50b25fbWFzX2FjY2lkZW50ZXMsIHggPSB+UmVnacOzbi5NaWRlcGxhbiwgeSA9IH5tYXhfdmFsb3IsIG1hcmtlciA9IGxpc3QoY29sb3I9cGFsZXRhX2NvbG9yZXMpICwgdHlwZSA9ICdiYXInLGhvdmVydGVtcGxhdGUgPSB+cGFzdGUoIlJlZ2nDs246ICIsIFJlZ2nDs24uTWlkZXBsYW4sICI8YnI+Q2FudMOzbjogIiwgQ2FudMOzbiwgIjxicj5WYWxvcjogIiwgbWF4X3ZhbG9yLA0KICAgICAgIjxleHRyYT48L2V4dHJhPiIpKQ0KDQpmaWcgPC0gZmlnICU+JSBsYXlvdXQoeWF4aXMgPSBsaXN0KHRpdGxlID0gJycpLHhheGlzPWxpc3QodGl0bGUgPSAnJyksIGJhcm1vZGUgPSAnc3RhY2snKQ0KDQpmaWcNCmBgYA0KDQpFbnRyZSAyMDE2LTIwMjIsIGxhIGdyw6FmaWNhIGFwaWxhZGEgZGUgYmFycmFzIG11ZXN0cmEgcXVlIGxhcyBiYXJyYXMgZXN0w6FuIGFncnVwYWRhcyBwb3IgcmVnacOzbiB5IGFwaWxhZGFzIHBvciBjYW50b25lcyBjb24gbWF5b3IgbsO6bWVybyBkZSBhY2NpZGVudGVzLiBFbCBjb2xvciBpbmRpY2EgY3XDoW50b3MgYWNjaWRlbnRlcyBodWJpZXJvbiBlbiBjYWRhIGNhbnTDs24uIEVuIGxhIHpvbmEgZGUgQ29zdGEgUmljYSwgZG9uZGUgbcOhcyBhY2NpZGVudGVzIG9jdXJyaWVyb24sIGxhIHJlZ2nDs24gY2VudHJhbCB5IGVsIGNhbnTDs24gZGUgU2FuIEpvc8OpIHRpZW5lbiBlbCBtYXlvciBuw7ptZXJvIGRlIGFjY2lkZW50ZXMuIEFkZW3DoXMsIGxvcyBjYW50b25lcyBxdWUgY29tcGFydGVuIG3DoXMgYWNjaWRlbnRlcyBzb24gbG9zIG3DoXMgZGVzYXJyb2xsYWRvcyB1cmJhbmFtZW50ZSwgbWllbnRyYXMgcXVlIGxvcyBjYW50b25lcyBjb24gbWVub3MgYWNjaWRlbnRlcyBzb24gbG9zIG3DoXMgcG9icmVzIG8gbWVub3MgZGVzYXJyb2xsYWRvcy4gRXN0byBzZSBwb2Ryw61hIGRlYmVyIGEgcXVlIGhheSBtZW5vcyB2ZWjDrWN1bG9zIGVuIGNhcnJldGVyYSwgcG9yIGxhIGZhbHRhIGRlIHBvZGVyIGFkcXVpc2l0aXZvLg0KDQpgYGB7ciwgZWNobyA9IEZBTFNFfQ0KYW5pb0NURzwtZGF0YSAlPiUNCiAgZ3JvdXBfYnkoQcOxbyxUaXBvLmRlLmNpcmN1bGFjacOzbixFc3RhZG8uZGVsLnRpZW1wbyxDbGFzZS5kZS5hY2NpZGVudGUpICU+JQ0KICBzdW1tYXJpc2UoTnVtZXJvQWNjaWRlbnRlcz1uKCksLmdyb3Vwcz0iZHJvcCIpDQoNCmFuaW9DVEc8LWFuaW9DVEclPiUNCiAgZ3JvdXBfYnkoQcOxbyxUaXBvLmRlLmNpcmN1bGFjacOzbixFc3RhZG8uZGVsLnRpZW1wbyxDbGFzZS5kZS5hY2NpZGVudGUpJT4lDQogIHN1bW1hcmlzZShBY2NpZGVudGVzID0gbWluKE51bWVyb0FjY2lkZW50ZXMpLC5ncm91cHMgPSAiZHJvcCIpJT4lDQogIGFycmFuZ2UoQWNjaWRlbnRlcykNCmFuaW9DVEc8LWFuaW9DVEclPiUNCiAgcmVuYW1lKENpcmN1bGFjaW9uID0gVGlwby5kZS5jaXJjdWxhY2nDs24pJT4lDQogIHJlbmFtZShDbGltYSA9IEVzdGFkby5kZWwudGllbXBvKSU+JQ0KICByZW5hbWUoR3JhdmVkYWQgPSBDbGFzZS5kZS5hY2NpZGVudGUpDQoNCmFuaW9DVEckQcOxbzwtc3Vic3RyKGFuaW9DVEckQcOxbywgc3RhcnQgPSAzLCBzdG9wID0gbmNoYXIoYW5pb0NURyRBw7FvKSkNCiNlbGltaW5vIGVsIDIwIGRlbCBhw7FvIHBhcmEgcXVlIHNlYSBtZWpvciBsYSByZXNwcmVzZW50YWNpw7NuIHRleHR1YWwNCiNvIHNlYSBlbiB2ZXogZGUgMjAxNiBzYWxlIDE2DQpgYGANCg0KYGBge3IsZWNobz1GQUxTRX0NCmZhY2VJbnRlcmFjdGl2byA8LSBnZ3Bsb3QoYW5pb0NURywgYWVzKHg9Q2lyY3VsYWNpb24sIHk9QWNjaWRlbnRlcywgY29sb3I9Q2xpbWEsIGdyb3VwPUdyYXZlZGFkKSkgKw0KICAgIGdlb21fcG9pbnQoKSsNCiAgICBsYWJzKHg9IlRpcG8gZGUgY2lyY3VsYWNpw7NuIix5PSJDYW50aWRhZCBhY2NpZGVudGVzIixjb2xvdXI9IiBFc3RhZG8gZGVsIGNsaW1hIikrDQogIHNjYWxlX3lfY29udGludW91cyhsaW1pdHMgPSBjKDAsIDI2MDApLCBicmVha3MgPSBjKDAsIDI2MDApKSsNCiAgdGhlbWUoYXhpcy50ZXh0LnggPSBlbGVtZW50X3RleHQoYW5nbGUgPSAtNDUsIGhqdXN0ID0gMCksYXhpcy50ZXh0LnkgPSBlbGVtZW50X3RleHQoYW5nbGU9MTIpKSsNCiAgICBmYWNldF9ncmlkKEHDsW8gfiAuLCBzY2FsZSA9ICJmcmVlX3giLHNwYWNlID0gImZyZWUiKQ0KICAgIA0KDQpnZ3Bsb3RseShmYWNlSW50ZXJhY3Rpdm8pDQpgYGANCg0KRXN0YSBncsOhZmljYSBtdWVzdHJhIGVsIG3DrW5pbW8gZGUgYWNjaWRlbnRlcyBwb3IgYcOxbywgdGlwbyBkZSBjaXJjdWxhY2nDs24sIGVzdGFkbyBkZWwgY2xpbWEgeSBzb24gYWdydXBhZG9zIHBvciBsYSBncmF2ZWRhZCBkZWwgYWNjaWRlbnRlLiBMYSBtYXlvcsOtYSBkZSBsb3MgYWNjaWRlbnRlcyBjdXJpb3NhbWVudGUgc2UgZGFuIGNvbiBidWVuIHRpZW1wbywgY29udHJhcmlhbWVudGUgYSBsbyBxdWUgc2UgZXNwZXJhcsOtYSBxdWUgc2VhIG3DoXMgYmllbiBlbiB1biBtYWwgY2xpbWEgY29tbyBsYSBsbHV2aWEuIEVzdG8gcXVpZXJlIGRlY2lyIHF1ZSBzaSBoYXkgdW4gYnVlbiBjbGltYSBsb3MgY29uZHVjdG9yZXMgc2UgcmVsYWphbiB5IG5vIGFuZGFuIGxvIHN1ZmljaWVudGVtZW50ZSBhdGVudG9zIGFsIGFtYmllbnRlLiBFc3RvIHRpZW5lIHVuIGVmZWN0byBpbm1lZGlhdG8gY29uIGVsIHRpcG8gZGUgY2lyY3VsYWNpw7NuLCB5YSBxdWUgYWwgbm8gdG9tYXIgbGEgc3VmaWNpZW50ZSBwcmVjYXVjacOzbiBzZSB0ZXJtaW5hbiBhY2NpZGVudGFuZG8sIHkgZXN0b3MgZW4gc3UgbWF5b3LDrWEgc29uIGRlIGV4dHJlbWEgZ3JhdmVkYWQuDQoNCmBgYHtyLCBlY2hvID0gRkFMU0V9DQojIENhbGN1bGFyIGxhIGNhbnRpZGFkIGRlIGFjY2lkZW50ZXMgcG9yIGHDsW8NCmZyZWN1ZW5jaWFfYcOxbyA8LSB0YWJsZShkYXRhJEHDsW8pDQoNCiMgQ3JlYXIgdW4gZnJhbWUgZGUgZGF0b3MgY29uIGxhIGZyZWNpZW5jYSB5IGVsIGHDsW8NCmRhdG9zX2ZyZWN1ZW5jaWFfYcOxbyA8LSBkYXRhLmZyYW1lKA0KICBBw7FvID0gbmFtZXMoZnJlY3VlbmNpYV9hw7FvKSwNCiAgQWNjaWRlbnRlcyA9IGFzLm51bWVyaWMoZnJlY3VlbmNpYV9hw7FvKQ0KKQ0KDQojIENyZWFyIGVsIGdyYWZpY28gY29uIHVuIHB1bnRvIHBvciBjYWRhIGHDsW8NCnB1bnRvc19hw7FvIDwtIGdncGxvdChkYXRvc19mcmVjdWVuY2lhX2HDsW8sIGFlcyh4ID0gQcOxbywgeSA9IEFjY2lkZW50ZXMsIGNvbG9yID0gQcOxbykpICsNCiAgZ2VvbV9wb2ludChzaXplID0gNSkgKw0KICBzY2FsZV94X2Rpc2NyZXRlKGJyZWFrcyA9IE5VTEwpICsNCiAgbGFicyh5ID0gIiMgZGUgYWNjaWRlbnRlcyIsIA0KICAgICAgIHRpdGxlID0gIkNhbnRpZGFkIGRlIGFjY2lkZW50ZXMgcG9yIGHDsW8iKSArDQogIHRoZW1lKGF4aXMudGl0bGUueCA9IGVsZW1lbnRfYmxhbmsoKSwNCiAgICAgICAgYXhpcy50ZXh0LnggPSBlbGVtZW50X2JsYW5rKCkpDQoNCnB1bnRvc19hw7Fvc19pbnRlcmFjdGl2YSA8LSBnZ3Bsb3RseShwdW50b3NfYcOxbykNCmBgYA0KDQpgYGB7ciwgZWNobyA9IEZBTFNFfQ0KYmFycmFzX2hvcmEgPC0gZ2dwbG90KGRhdGEsIGFlcyh4ID0gSG9yYS5yZWNvZGlmaWNhZGEsIGZpbGwgPSBIb3JhLnJlY29kaWZpY2FkYSkpICsNCiAgZ2VvbV9iYXIoKSArDQogIGxhYnModGl0bGUgPSAiQWNjaWRlbnRlcyBwb3IgYcOxbyB5IHBvciBIb3JhIHJlY29kaWZpY2FkYSIsDQogICAgICAgeCA9ICJIb3JhIFJlY29kaWZpY2FkYSIsIHkgPSAiIyBkZSBhY2NpZGVudGVzIiwgZmlsbCA9ICJBw7FvIC8gUmFuZ28gaG9yYXJpbyIpICsNCiAgdGhlbWUoYXhpcy50ZXh0LnggPSBlbGVtZW50X2JsYW5rKCkpDQoNCmJhcnJhc19ob3JhX2ludGVyYWN0aXZhIDwtIGdncGxvdGx5KGJhcnJhc19ob3JhKQ0KYGBgDQoNCmBgYHtyLCBlY2hvID0gRkFMU0V9DQpiYXJyYXNfdGlwb19jbGFzZSA8LSBnZ3Bsb3QoZGF0YSwgYWVzKHggPSBUaXBvLmRlLmFjY2lkZW50ZSwgZmlsbCA9IENsYXNlLmRlLmFjY2lkZW50ZSkpICsNCiAgZ2VvbV9iYXIoKSArDQogIGxhYnModGl0bGUgPSAiVGlwb3MgZGUgaGVyaWRvcyBwb3IgdGlwbyBkZSBhY2NpZGVudGUgZW50cmUgMjAxNi0yMDIyIiwNCiAgICAgICB4ID0gIlRpcG8gZGUgYWNjaWRlbnRlIiwgeSA9ICIjIGRlIGFjY2lkZW50ZXMiLCBmaWxsID0gIlRpcG8gZGUgaGVyaWRvcyIpICsNCiAgdGhlbWUoYXhpcy50ZXh0LnggPSBlbGVtZW50X3RleHQoYW5nbGUgPSAzMTUsIGhqdXN0ID0gMCkpDQoNCmdncGxvdGx5KGJhcnJhc190aXBvX2NsYXNlKQ0KYGBgDQoNCmBgYHtyLGVjaG89RkFMU0V9DQpkYXRvc19tdWx0aWRpbWVuc2lvbmFsZXM8LWRhdGElPiUNCiAgZmlsdGVyKGdyZXBsKCJeWzEtN11cXC4oRG9taW5nb3xMdW5lc3xNYXJ0ZXN8TWnDqXJjb2xlc3xKdWV2ZXN8Vmllcm5lc3xTw6FiYWRvKSQiLCBEw61hKSkgJT4lDQogIGdyb3VwX2J5KEhvcmEucmVjb2RpZmljYWRhLETDrWEsRXN0YWRvLmRlbC50aWVtcG8sVGlwby5kZS5jYWx6YWRhLFRpcG8uZGUuY2lyY3VsYWNpw7NuKSU+JQ0KICBzdW1tYXJpc2UoYWNjaWRlbnRlcz1uKCksLmdyb3VwcyA9ICJkcm9wIikNCg0KZGF0b3NfbXVsdGlkaW1lbnNpb25hbGVzJETDrWEgPC0gZ3N1YigiWzEtN11cXC4iLCAiIiwgZGF0b3NfbXVsdGlkaW1lbnNpb25hbGVzJETDrWEpDQogIA0KYGBgDQoNCg0KYGBge3IsZWNobz1GQUxTRX0NCmF4aXMgPSBsaXN0KHNob3dsaW5lPUZBTFNFLA0KICAgICAgICAgICAgemVyb2xpbmU9RkFMU0UsDQogICAgICAgICAgICBncmlkY29sb3I9JyNmZmZmJywNCiAgICAgICAgICAgIHRpY2tsZW49MSkNCg0KbWF0cml6RCA8LSBkYXRvc19tdWx0aWRpbWVuc2lvbmFsZXMgJT4lDQogIHBsb3RfbHkoKSANCm1hdHJpekQgPC0gbWF0cml6RCAlPiUNCiAgYWRkX3RyYWNlKA0KICAgIHR5cGUgPSAnc3Bsb20nLA0KICAgIGRpbWVuc2lvbnMgPSBsaXN0KA0KICAgICAgbGlzdChsYWJlbD0nRMOtYScsdmFsdWVzPX5Ew61hKSwNCiAgICAgIGxpc3QobGFiZWw9J1Ryw6Fuc2l0bycsdmFsdWVzPX5UaXBvLmRlLmNpcmN1bGFjacOzbiksDQogICAgICBsaXN0KGxhYmVsPSdIb3JhJyx2YWx1ZXM9fkhvcmEucmVjb2RpZmljYWRhKSwNCiAgICAgIGxpc3QobGFiZWw9J1bDrWEnLHZhbHVlcz1+VGlwby5kZS5jYWx6YWRhKSwNCiAgICAgIGxpc3QobGFiZWw9J0NsaW1hJyx2YWx1ZXM9fkVzdGFkby5kZWwudGllbXBvKQ0KICAgICkNCiAgKQ0KbWF0cml6RCA8LSBtYXRyaXpEICU+JQ0KICBsYXlvdXQoDQogICAgdGl0bGU9ICdBY2NpZGVudGVzIGRlbCAyMDE2LTIwMjIgZXZhbHVhbmRvIGRpc3RpbnRvcyBmYWN0b3JlcycsDQogICAgaG92ZXJtb2RlPSdjbG9zZXN0JywNCiAgICBkcmFnbW9kZT0gJ3NlbGVjdCcsDQogICAgcGxvdF9iZ2NvbG9yPSdyZ2JhKDI0MCwyNDAsMjQwLCAwLjk1KScsDQogICAgeGF4aXM9bGlzdChkb21haW49TlVMTCwgc2hvd2xpbmU9RiwgemVyb2xpbmU9RiwgZ3JpZGNvbG9yPScjZmZmZicsIHRpY2tsZW49NCksDQogICAgeWF4aXM9bGlzdChkb21haW49TlVMTCwgc2hvd2xpbmU9RiwgemVyb2xpbmU9RiwgZ3JpZGNvbG9yPScjZmZmZicsIHRpY2tsZW49NCksDQogICAgeGF4aXMyPWF4aXMsDQogICAgeGF4aXMzPWF4aXMsDQogICAgeGF4aXM0PWF4aXMsDQogICAgeWF4aXMyPWF4aXMsDQogICAgeWF4aXMzPWF4aXMsDQogICAgeWF4aXM0PWF4aXMNCiAgKQ0KDQptYXRyaXpEIDwtIG1hdHJpekQgJT4lDQogIGxheW91dCgNCiAgeGF4aXMgPSBsaXN0KHRpY2t2YWxzID0gTlVMTCwgdGlja3RleHQgPSBOVUxMKSwNCiAgeGF4aXMyID0gbGlzdCh0aWNrdmFscyA9IE5VTEwsIHRpY2t0ZXh0ID0gTlVMTCksDQogIHhheGlzMyA9IGxpc3QodGlja3ZhbHMgPSBOVUxMLCB0aWNrdGV4dCA9IE5VTEwpLA0KICB4YXhpczQgPSBsaXN0KHRpY2t2YWxzID0gTlVMTCwgdGlja3RleHQgPSBOVUxMKSwNCiAgeGF4aXM1ID0gbGlzdCh0aWNrdmFscyA9IE5VTEwsIHRpY2t0ZXh0ID0gTlVMTCksDQogIHlheGlzID0gbGlzdCh0aWNrdmFscyA9IE5VTEwsIHRpY2t0ZXh0ID0gTlVMTCksDQogIHlheGlzMiA9IGxpc3QodGlja3ZhbHMgPSBOVUxMLCB0aWNrdGV4dCA9IE5VTEwpLA0KICB5YXhpczMgPSBsaXN0KHRpY2t2YWxzID0gTlVMTCwgdGlja3RleHQgPSBOVUxMKSwNCiAgeWF4aXM0ID0gbGlzdCh0aWNrdmFscyA9IE5VTEwsIHRpY2t0ZXh0ID0gTlVMTCksDQogIHlheGlzNSA9IGxpc3QodGlja3ZhbHMgPSBOVUxMLCB0aWNrdGV4dCA9IE5VTEwpDQopDQptYXRyaXpEDQoNCg0KYGBgDQoNCkVzdGEgbWF0cml6IGRlIGRpc3BlcmNpw7NuIG11bHRpdmFyaWFkYSBldmFsw7phIGxhcyBjb25kaWNpb25lcyBjbGltw6F0aWNhcywgZWwgdGlwbyBkZSB2w61hLCBlbCB0aWVtcG8gcmVnaXN0cmFkbywgZWwgdGlwbyBkZSB0csOhbnNpdG8geSBlbCBkw61hIGNvbiBtw6FzIGFjY2lkZW50ZXMgZW4gQ29zdGEgUmljYSBkZWwgMjAxNiBhbCAyMDIyLiBDb21vIG11ZXN0cmEgbGEgbWF0cml6LCBlbCBuw7ptZXJvIGRlIGFjY2lkZW50ZXMgbm8gc29sbyBlbiB1biBhw7FvLCBzaW5vIGVuIHZhcmlvcyBhw7Fvcy4gRGVwZW5kZSBkZWwgbHVnYXIgcG9yIGRvbmRlIGNvbmR1emNhcywgc2kgaGF5IHByb2hpYmljaW9uZXMgZGUgY2lyY3VsYWNpw7NuLCBkZWwgdGlwbyBkZSB0csOhZmljbyBvIGRlIGxhIG5hdHVyYWxlemEgZGUgbGEgY2FycmV0ZXJhLiBFc3RvIHNpZ25pZmljYSBxdWUgZXN0b3MgdHJlcyBmYWN0b3JlcywgcXVlIHZhcsOtYW4gZGUgdW4gYcOxbyBhIG90cm8sIG5vIGNhbWJpYW4uIEFkZW3DoXMsIGVsIGTDrWEsIGxhcyBjb25kaWNpb25lcyBkZSBsYSBjYXJyZXRlcmEgeSBlbCBjbGltYSBtdWVzdHJhbiB1biBwYXRyw7NuIGRlIGFjY2lkZW50ZXMgZGViaWRvIGEgbG9zIGTDrWFzIG9jdXBhZG9zLCBsbyBxdWUgcHVlZGUgaGFjZXIgcXVlIGxhIGNvbmR1Y2Npw7NuIGVuIGNpZXJ0b3MgdGlwb3MgZGUgdsOtYXMgc2VhIG3DoXMgZGlmw61jaWwgeSBwZW9yIGRlYmlkbyBhIGxhcyBjb25kaWNpb25lcyBjbGltw6F0aWNhcy4gUG9yIMO6bHRpbW8sIGVsIHBhdHLDs24gZW50cmUgZMOtYSwgY2FycmV0ZXJhIHkgaG9yYSBwdWVkZSBzZXIgbXV5IHNpbWlsYXIgYWwgYW50ZXJpb3IsIHBlcm8gcHVlZGUgdmFyaWFyIGVuIGZ1bmNpw7NuIGRlIHNpIGVzIGhvcmEgcHVudGEgbyB1biBpbmRpY2lvIGRlIHF1ZSBlbCBjb25kdWN0b3Igbm8gc2UgZW5jdWVudHJhIGVuIMOzcHRpbWFzIGNvbmRpY2lvbmVzIGRlIGNvbmR1Y2Npw7NuLiAuIEN1cmlvc2FtZW50ZSwgZWwgdHLDoWZpY28sIGxhcyBjb25kaWNpb25lcyBtZXRlb3JvbMOzZ2ljYXMgeSBsYXMgY2FycmV0ZXJhcyBzb24gY2xhcmFtZW50ZSBpbmVzdGFibGVzLCBjb21vIHNlIGVzcGVyYWJhLg0KDQpgYGB7ciwgZWNobyA9IEZBTFNFfQ0KZ3JhZmljYV9kZV9ncmFmaWNhcyA8LSBzdWJwbG90KHB1bnRvc19hw7Fvc19pbnRlcmFjdGl2YSwgYmFycmFzX2hvcmFfaW50ZXJhY3RpdmEsIG5yb3dzID0gMikNCg0KZ3JhZmljYV9kZV9ncmFmaWNhcw0KYGBg